package com.itheima.reggie.common.exception.catchs;

import com.itheima.reggie.common.R;
import com.itheima.reggie.common.exception.BusinessException;
import com.itheima.reggie.common.exception.SystemException;
import com.itheima.reggie.common.exception.UnKnowException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLIntegrityConstraintViolationException;

/**
 * @author: Liu
 * @date: 2022/02/24
 * @time: 11:04
 */
@RestControllerAdvice
@Slf4j
public class CatchException {

/*

    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R handleSQLIntegrityConstraintViolationException(SQLIntegrityConstraintViolationException e) {
        //保留现场
        log.info("出现了系统,{}", e.getMessage());
        //通知系统管理员
        //略，邮件发送
        //友好的通知用户
        return R.error("您的网络有问题，请稍后重试！");
    }
*/

    @ExceptionHandler(SystemException.class)
    public R handleSystemException(SystemException e) {
        //保留现场
        log.info("出现了系统,{}", e.getMessage());
        //通知系统管理员
        //略，邮件发送
        //友好的通知用户
        return R.error("您的网络有问题，请稍后重试！");
    }

    @ExceptionHandler(BusinessException.class)
    public R handleBusinessException(BusinessException e) {
        //保留现场
        log.info("出现了系统,{}", e.getMessage());
        //通知系统管理员
        //略，邮件发送
        //友好的通知用户
        return R.error("您的网络有问题，请稍后重试！");
    }

    @ExceptionHandler(UnKnowException.class)
    public R handleUnKnowException(UnKnowException e) {
        //保留现场
        log.error("出现了系统,{}", e.getMessage());
        //通知系统管理员
        //略，邮件发送
        //友好的通知用户
        return R.error("您的网络有问题，请稍后重试！");
    }

    @ExceptionHandler(Exception.class)
    public R handleException(Exception e) {
        //保留现场
        log.error("出现了系统,{}", e.getMessage());
        //通知系统管理员
        //略，邮件发送
        //友好的通知用户
        return R.error("您的网络有问题，请稍后重试！");
    }

}
